/**
 * Spring 加载 Bean 的方式：
 *
 * <dl>
 *   <dt>1. 配置方式创建与加载 Bean</dt>
 *   <dd>
 *       <dl>
 *           <dt>1) 注解方式</dt>
 *           <dd>{@linkplain com.example.spring.bean.load01config.AnnoSpringDemo AnnoSpringDemo}</dd>
 *
 *           <dt>2) XML 方式</dt>
 *           <dd>{@linkplain com.example.spring.bean.load01config.XmlSpringDemo XmlSpringDemo}</dd>
 *       </dl>
 *   </dd>
 *
 *   <dt>2. 使用 @ComponentScan 扫描组件</dt>
 *   <dd>
 *       默认扫描启动类所在包及其子包中带有 @Component、@Controller、@Service、@Repository、@Bean 注解的类。
 *       <dl>
 *           <dt>1) 注解方式： FilterType.ANNOTATION 方式 </dt>
 *           <dd>参考 {@linkplain com.example.spring.bean.load02scan.ScanConfig ScanConfig}
 *           和 {@linkplain com.example.spring.bean.load02scan.ScanDemo ScanDemo} </dd>
 *
 *           <dt>2) 注解方式： FilterType.CUSTOM 方式 </dt>
 *           <dd>参考 {@linkplain com.example.spring.bean.load02scan.CustomConfig CustomConfig}、
 *               {@linkplain com.example.spring.bean.load02scan.CustomScanFilter CustomScanFilter}、
 *               {@linkplain com.example.spring.bean.load02scan.CustomScanDemo CustomScanDemo} </dd>
 *
 *           <dt>3) XML 方式</dt>
 *           <dd>在 beans.xml 中配置 {@code <context:component-scan>} </dd>
 *       </dl>
 *   </dd>
 *
 *   <dt>3. 使用 @Scope 指定 Bean 类型 </dt>
 *   <dd>
 *       <dl>
 *           <dt>singleton</dt>
 *           <dd>单例（默认），容器启动时创建对象并存入 IOC 容器，以后每次获取都是同一个实例。
 *               参考 {@linkplain com.example.spring.bean.load03scope.SingletonTest}</dd>
 *
 *           <dt>prototype</dt>
 *           <dd>多实例，容器启动不创建，getBean 时创建新对象。
 *               参考 {@linkplain com.example.spring.bean.load03scope.PrototypeTest}</dd>
 *
 *           <dt>request</dt>
 *           <dd>Web 应用中，每个请求创建一个实例</dd>
 *
 *           <dt>session</dt>
 *           <dd>Web 应用中，同一个 Session 创建一个实例</dd>
 *       </dl>
 *   </dd>
 *
 *   <dt>4. 懒加载 (@Lazy)</dt>
 *   <dd>在 getBean 时才创建实例，参考 {@linkplain com.example.spring.bean.load04lazy.LazyBeanDemo LazyBeanDemo}</dd>
 *
 *   <dt>5. 条件注册 Bean (@Conditional + Condition)</dt>
 *   <dd>根据条件注册 Bean，Spring Boot 中有很多扩展 Bean，
 *          参考 {@linkplain com.example.spring.bean.load05condition.ConditionDemo ConditionDemo} </dd>
 *
 *   <dt>6. 导入 Bean</dt>
 *   <dd>
 *       <ol>
 *           <li>直接使用 {@code @Import} 导入 Bean，用于扫描不到的目录或非本目录的类</li>
 *           <li>实现 {@code ImportSelector} 接口，重写 {@code selectImports} 方法返回全路径，配合 {@code @Import(ImportSelectorImpl.class)} 使用</li>
 *           <li>实现 {@code ImportBeanDefinitionRegistrar} 接口，重写 {@code registerBeanDefinitions} 方法，自定义 Bean 注入</li>
 *       </ol>
 *   </dd>
 *
 *   <dt>7. 使用 FactoryBean 创建 Bean</dt>
 *   <dd>通过 {@code FactoryBean.getObject()} 获取 Bean</dd>
 *
 *   <dt>8. Bean 生命周期</dt>
 *   <dd>Bean 创建 → 初始化 → 销毁 </dd>
 *
 *   <dt>9. Bean 注入与值注入</dt>
 *   <dd>使用注解 {@code @Value}、{@code @Autowired}、{@code @Qualifier} 等 </dd>
 * </dl>
 */

package com.example.spring.bean;
